const bcryct = require('bcryptjs');
const express = require('express');
const db = require('../../db/index.js')
const Jwt = require('jsonwebtoken')
const config = require('../../config');


// 注册接口
exports.regUser = (req,res) =>{
    // 检验用户名是否重复
    const userInfo = req.body;
    let user = {
        // username,password,tel
        ...req.body,
        uid:1,  //新用户一律为1(普通用户)
        schToken:1, //新用户一律为认证校园
        isdelete:0,  //新用户一律为0(未封号)
        trade_num:0,    //新用户二手信息发布数量一律为0
        connect_num:0,    //新用户讨论交流发布数量一律为0
        sex:'男', //默认为男
        birthday:'1970-01-01',
        trade_likes:0 //新用户二手商品点赞数一律为0
    }
    if(user.username == null || user.password == null || user.tel == null){    
        return res.cc("未输入用户名或密码或手机号")
    }
    var str = "select * from user where tel = ?"
    // console.log(req.body.tel)
    db.query(str,user.tel,(err,results)=>{
        if(err) return res.cc(1,err);
        if(results.length >0){
            return res.cc("此手机号已注册")
        }
        // console.log(results)
        user.password = bcryct.hashSync(user.password,10)
        str = "insert into user set ?"
        db.query(str,user,(err,results)=>{
            if(err) return res.cc(err)
            if(results.affectedRows != 1) return res.cc("注册失败，请重新尝试")
            res.send({
                status:0,
                message:"注册成功"
            })
        })
    })
}
// 登录接口
let allUser = {}
exports.login = (req,res)=>{
    const userInfo = req.body  
    if(req.body.username === null || req.body.password === null) return res.cc("用户名或密码不能为空")
    var str = "select * from user where tel = ?"  
    db.query(str,userInfo.tel,(err,results)=>{      // 检查用户名是否注册
        if(err) return res.cc(err)
        if(results.length != 1) return res.cc("此手机号未注册")
        var dataString = JSON.stringify(results);
        results = JSON.parse(dataString);
        var user = {...results[0],password:'',photo:''}
        allUser = user
        // // 验证密码是否正确 比较密码时：表单密码在前，数据库在后
       const psd = bcryct.compareSync(userInfo.password,results[0].password)
       if(psd){   
           if(results[0].isdelete != 1){
            const token = Jwt.sign(user,config.JwtSecret,{
                expiresIn:"10h"
            })
            const refreshToken = Jwt.sign(user,config.JwtSecret,{
                expiresIn:"15day"
            })
            
           res.send({
               status:0,
               message:"登录成功",
               data:{
                   token:'Bearer '+ token,
                   refresh_token:'Bearer ' + refreshToken
               }
           })
           }else{
             return res.cc("该账户已被封号")
           }
       }else{
           res.cc("手机号或密码错误")
       }
    })
}


// 匹配账号 ---匹配学号和手机号
// 前端保存手机号，用来修改密码
exports.matchUser = (req,res)=>{
    
    var str = "select * from user where stu_id = ? and tel = ?"
    db.query(str,[req.body.stu_id,req.body.tel],(err,results)=>{
        if(err) return res.cc(err)
        if(results.length != 1) return res.cc("学号或手机号不正确")
        // 验证通过----重置密码
        res.cc("验证通过",0)

    })
}
// 重置密码
exports.recoveryPsd =  (req,res)=>{
    var password = req.body.password
    // 进行加密
    // console.log(req.body)
    password = bcryct.hashSync(password,10)
    var str = "update user set password = ? where tel= ? "
    db.query(str,[password,req.body.tel],(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows != 1) return res.cc("找回密码错误")
        // 验证通过----重置密码
        res.cc("密码重置成功",0)
    })
}